from langchain_core.tools import StructuredTool
from pydantic import Field
from pydantic.v1 import BaseModel


class SortList(BaseModel):
    num: str = Field(description="待排序列表")


def dort_fun(num):
    """Multiply two numbers."""
    return sorted(eval(num))


sorter = StructuredTool.from_function(
    func=dort_fun,  # 工具具体逻辑
    name="sort_num",  # 工具名
    description="排序列表中的数字",  # 工具信息
    args_schema=SortList,  # 工具接受参数信息
    return_direct=True,  # 直接作为工具的输出返回给调用者
    handle_tool_error=True,  # 报错了继续执行，不会吧那些报错行抛出，也可以自定义函数处理，handle_tool_error=函数名
)
print(sorter.invoke("[4, 3, 2, 1, 5]"))